/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} targetSum
 * @return {boolean}
 */
 var hasPathSum = function(root, targetSum) {
  const traversal = function(root,count){
    if(!root.left && !root.right && count === 0) return true // 如果是子节点并且此时和是0 就返回true
    if(!root.left && !root.right) return false // 如果是叶子结点 但是count !== 0 就返回false
    if(root.left){ // 有左子树 就对左子树进行递归
      if(traversal(root.left,count - root.left.val)) return true // 是true 就返回treu
    }
    if(root.right){// 对右子树进行递归
      if(traversal(root.right,count - root.right.val)) return true 
    }
    return false // 最后上面的都没返回就返回false
  }
  if(root === null) return false // 是null 就返回false
  return traversal(root,targetSum-root.val) // 不是返回函数返回值 ,传入什么传入 target-root.val
};